/*
 * @Author: wangchao
 * @Date: 2024-08-22 11:50:32
 * @LastEditors: wangchao
 * @LastEditTime: 2024-09-25 13:30:58
 * @FilePath: \JD-RTT-Driver\applications\u_rtc.h
 * @Description:
 * Copyright (c) 2024 by Bingshan Guardian, All Rights Reserved.
 */

#ifndef _U_RTC_H_
#define _U_RTC_H_

#include <rtdevice.h>
#include <rtthread.h>
#include "board.h"

#define SECOND_DATA_REG 0x02
#define MINUTE_DATA_REG 0x03
#define HOUR_DATA_REG   0x04
#define DAY_DATA_REG    0x05
#define WEEK_DATA_REG   0x06
#define MONTH_DATA_REG  0x07
#define YEAR_DATA_REG   0x08

struct app_tm
{
    rt_uint16_t tm_sec;    // 秒 - [0, 60]
    rt_uint16_t tm_min;    // 分 - [0, 59]
    rt_uint16_t tm_hour;   // 时 - [0, 23]
    rt_uint16_t tm_mday;   // 一个月中的第几天 - [1, 31]
    rt_uint16_t tm_mon;    // 月份 - [0, 11] (0 = January)
    rt_uint16_t tm_year;   // 年份 - 自定义年份（可以是相对于某一年，也可以是实际年份）
    rt_uint16_t tm_wday;   // 一周中的第几天 - [0, 6] (0 = Sunday)
    rt_uint16_t tm_yday;   // 一年中的第几天 - [0, 365]
    rt_uint16_t tm_isdst;  // 夏令时标识符（是否是夏令时）
};

extern struct app_tm app_cur_time;

rt_size_t rtc_get_time(struct app_tm* tms);
int compare_time_within_2_seconds(const struct app_tm* old_time, const struct app_tm* new_time);

#endif